home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 September / CHIP 1996 szeptember (CD07).zip / CHIP_CD07.ISO / sac / pack / rar200sa.exe / rar / TECHNOTE.DOC < prev    next >
Text File  |  1996-05-24  |  10KB  |  360 lines

  1.  
  2.  ██████╗   █████╗  ██████╗
  3.  ██╔══██╗ ██╔══██╗ ██╔══██╗     RAR verzia 2.00 - Technicke informacie
  4.  ██████╔╝ ███████║ ██████╔╝     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5.  ██╔══██╗ ██╔══██║ ██╔══██╗
  6.  ██║  ██║ ██║  ██║ ██║  ██║
  7.  ╚═╝  ╚═╝ ╚═╝  ╚═╝ ╚═╝  ╚═╝
  8.  
  9.   ┌─────────────────────────────────────────────────────────────────────┐
  10.   │TU POPISOVANY FORMAT ARCHIVU JE PLATNY LEN PRE VERZIE NOVSIE AKO 1.50│
  11.   └─────────────────────────────────────────────────────────────────────┘
  12.  
  13.  ╔════════════════════════════════════════════════════════════════════════╗
  14.  ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Suborovy format archivu RARu ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
  15.  ╚════════════════════════════════════════════════════════════════════════╝
  16.  
  17.    Archivny subor sa sklada z blokov premenlivej dlzky. Poradie tychto
  18. blokov moze byt rozne, ale prvy blok musi byt znackovy blok nasledovany
  19. blokom hlavicky archivu.
  20.  
  21.    Kazdy blok zacina nasledujucimi polami:
  22.  
  23. HEAD_CRC       2 bajty     CRC celeho bloku alebo casti bloku
  24. HEAD_TYPE      1 bajt      Typ bloku
  25. HEAD_FLAGS     2 bajty     Priznaky bloku
  26. HEAD_SIZE      2 bajty     Velkost bloku
  27. ADD_SIZE       4 bajty     Volitelne pole - velkost pridaneho bloku
  28.  
  29.    Pole ADD_SIZE je pritomne len ak (HEAD_FLAGS & 0x8000) != 0
  30.  
  31.    Celkova velkost bloku je HEAD_SIZE ak (HEAD_FLAGS & 0x8000) == 0
  32. a HEAD_SIZE+ADD_SIZE ak je pole ADD_SIZE pritomne - ked
  33. (HEAD_FLAGS & 0x8000) != 0.
  34.  
  35.    V kazdom bloku nasledujuce bity v HEAD_FLAGS maju spolocny vyznam:
  36.  
  37.   0x4000 - ak nastaveny, starsie verzie RARu ignoruju tento blok
  38.            a odstrania ho pri aktualizacii archivu.
  39.            ak nulovy, blok je kopirovany do noveho archivneho suboru
  40.            pri aktualizacii archivu;
  41.  
  42.   0x8000 - ak nastaveny, pole ADD_SIZE je pritomne a celkova velkost bloku
  43.            je HEAD_SIZE+ADD_SIZE.
  44.  
  45.   Deklarovane typy blokov:
  46.  
  47. HEAD_TYPE=0x72          znackovy blok
  48. HEAD_TYPE=0x73          hlavicka archivu
  49. HEAD_TYPE=0x74          hlavicka suboru
  50. HEAD_TYPE=0x75          hlavicka komentara
  51. HEAD_TYPE=0x76          extra informacia
  52. HEAD_TYPE=0x77          podblok
  53. HEAD_TYPE=0x78          zachranny zaznam
  54.  
  55.    Komentarovy blok je momentalne pouzivany len v inych blokoch a nevyskytuje
  56. sa samostatne.
  57.  
  58.    Archiv sa spracovava nasledujucim sposobom:
  59.  
  60. 1. Precita a skontroluje sa znackovy blok
  61. 2. Precita sa hlavicka archivu
  62. 3. Precitaju alebo vynechaju sa bajty HEAD_SIZE-velkost(MAIN_HEAD)
  63. 4. Ak nastal koniec archivu, spracuje sa ukoncenie archivu, inac
  64.    sa nacita 7 bajtov do poli HEAD_CRC, HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
  65. 5. Testuje sa HEAD_TYPE.
  66.    V pripade, ze je potrebne citat blok:
  67.          ak HEAD_TYPE==0x74
  68.            precita sa hlavicka suboru ( prvych 7 bajtov je uz precitanych )
  69.            precita alebo vynecha sa HEAD_SIZE-velkost(FILE_HEAD) bajtov
  70.            precita alebo vynecha sa FILE_SIZE bajtov
  71.          inac
  72.            precita sa zodpovedajuci blok HEAD_TYPE:
  73.              precita sa HEAD_SIZE-7 bajtov
  74.              ak (HEAD_FLAGS & 0x8000)
  75.                precita sa ADD_SIZE bajtov
  76.    V pripade, ze je potrebne vynechat blok:
  77.          vynecha sa HEAD_SIZE-7 bajtov
  78.          ak (HEAD_FLAGS & 0x8000)
  79.            vynecha sa ADD_SIZE bajtov
  80. 6. pokracuje sa bodom 4.
  81.  
  82.  
  83.  ╔════════════════════════════════════════════════════════════════════════╗
  84.  ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  Formaty blokov  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
  85.  ╚════════════════════════════════════════════════════════════════════════╝
  86.  
  87.  
  88.    Znackovy blok ( MARK_HEAD )
  89.  
  90.  
  91. HEAD_CRC        Vzdy 0x6152
  92. 2 bajty
  93.  
  94. HEAD_TYPE       Typ hlavicky: 0x72
  95. 1 bajt
  96.  
  97. HEAD_FLAGS      Vzdy 0x1a21
  98. 2 bajty
  99.  
  100. HEAD_SIZE       Velkost bloku = 0x0007
  101. 2 bajty
  102.  
  103.    Znackovy blok je momentalne reprezentovany pevnou sekvenciou
  104. bajtov: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
  105.  
  106.  
  107.  
  108.    Hlavicka archivu ( MAIN_HEAD )
  109.  
  110.  
  111. HEAD_CRC        CRC poli HEAD_TYPE az RESERVED2
  112. 2 bajty
  113.  
  114. HEAD_TYPE       Typ hlavicky: 0x73
  115. 1 bajt
  116.  
  117. HEAD_FLAGS      Bitove priznaky:
  118. 2 bajty
  119.                 0x01    - Atribut zvazku (archivny zvazok)
  120.                 0x02    - Pritomnost archivneho komentara
  121.                 0x04    - Atribut uzamknutia archivu
  122.                 0x08    - Solid atribut (solid archiv)
  123.                 0x10    - Nepouzite
  124.                 0x20    - Pritomnost AV informacie
  125.  
  126.                 zvysne bity v HEAD_FLAGS su rezervovane pre
  127.                 interne pouzitie
  128.  
  129. HEAD_SIZE       Celkova velkost hlavicky archivu vcetne archivnych komentarov
  130. 2 bajty
  131.  
  132. RESERVED1       Rezervovane
  133. 2 bajty
  134.  
  135. RESERVED2       Rezervovane
  136. 4 bajty
  137.  
  138.  
  139. Komentarovy blok je pritomny ak (HEAD_FLAGS & 0x02) != 0
  140.  
  141.  
  142.  
  143.    Hlavicka suboru (Suboru v archive)
  144.  
  145.  
  146. HEAD_CRC        CRC poli HEAD_TYPE az FILEATTR
  147. 2 bajty         a nazvu suboru
  148.  
  149. HEAD_TYPE       Typ hlavicky: 0x74
  150. 1 bajt
  151.  
  152. HEAD_FLAGS      Bitove priznaky:
  153. 2 bajty
  154.                 0x01 - subor pokracuje z predchadzajuceho zvazku
  155.                 0x02 - subor pokracuje na nasledujucom zvazku
  156.                 0x04 - subor je zakryptovany pomocou hesla
  157.                 0x08 - pritomny komentar suboru
  158.                 0x10 - je pouzita informacia z predchadzajucich suborov
  159.                        (solid priznak) (pre RAR 2.0 a novsie)
  160.  
  161.                 bity 7 6 5 (pre RAR 2.0 a novsie)
  162.  
  163.                      0 0 0    - velkost slovnika   64 kB
  164.                      0 0 1    - velkost slovnika  128 kB
  165.                      0 1 0    - velkost slovnika  256 kB
  166.                      0 1 1    - velkost slovnika  512 kB
  167.                      1 0 0    - velkost slovnika 1024 kB
  168.                      1 0 1    - rezervovane
  169.                      1 1 0    - rezervovane
  170.                      1 1 1    - subor je adresar
  171.  
  172.                 (HEAD_FLAGS & 0x8000) == 1, pretoze uplna
  173.                 velkost bloku je HEAD_SIZE + PACK_SIZE
  174.  
  175. HEAD_SIZE       Celkova velkost hlavicku suboru vcetne nazvu suboru
  176. 2 bajty         a komentarov
  177.  
  178. PACK_SIZE       Velkost suboru po kompresii
  179. 4 bajty
  180.  
  181. UNP_SIZE        Velkost suboru po rozbaleni
  182. 4 bajty
  183.  
  184. HOST_OS         Operacny system pouzity pre archivaciu
  185. 1 bajt                 0 - MS DOS
  186.                        1 - OS/2
  187.                        2 - Win32
  188.                        3 - Unix
  189.  
  190. FILE_CRC        CRC suboru
  191. 4 bajty
  192.  
  193. FTIME           Datum a cas v standardnom MS DOS formate
  194. 4 bajty
  195.  
  196. UNP_VER         Verzia RARu potrebna na extrakciu suboru
  197. 1 bajt
  198.  
  199. METHOD          Metoda kompresie
  200. 1 bajt
  201.  
  202. NAME_SIZE       Dlzka nazvu suboru
  203. 2 bajty
  204.  
  205. ATTR            Atributy suboru
  206. 4 bajty
  207.  
  208. FILE_NAME       Nazov suboru - retazec o dlzke NAME_SIZE bajtov
  209.  
  210.  
  211. Komentarovy blok je pritomny ak (HEAD_FLAGS & 0x08) != 0
  212.  
  213.  
  214.  
  215.   Komentarovy blok
  216.  
  217.  
  218. HEAD_CRC        CRC poli HEAD_TYPE az COMM_CRC
  219. 2 bajty
  220.  
  221. HEAD_TYPE       Typ hlavicky: 0x75
  222. 1 bajt
  223.  
  224. HEAD_FLAGS      Bitove priznaky
  225. 2 bajty
  226.  
  227. HEAD_SIZE       Velkost hlavicky komentara + velkost komentara
  228. 2 bajty
  229.  
  230. UNP_SIZE        Velkost komentaru po rozbaleni
  231. 2 bajty
  232.  
  233. UNP_VER         Verzia RARu potrebna na extrakciu komentara
  234. 1 bajt
  235.  
  236. METHOD          Metoda kompresie
  237. 1 bajt
  238.  
  239. COMM_CRC        CRC komentara
  240. 2 bajty
  241.  
  242. COMMENT         Text komentara
  243.  
  244.  
  245.  
  246.   Blok extra informacie
  247.  
  248.  
  249. HEAD_CRC        CRC bloku
  250. 2 bajty
  251.  
  252. HEAD_TYPE       Typ hlavicky: 0x76
  253. 1 bajt
  254.  
  255. HEAD_FLAGS      Bitove priznaky
  256. 2 bajty
  257.  
  258. HEAD_SIZE       Celkova velkost bloku
  259. 2 bajty
  260.  
  261. INFO            Ine data
  262.  
  263.  
  264.   Podblok
  265.  
  266. Po objekte v archive (blok alebo hlavicka) moze nasledovat podblok.
  267. Podblok je zavisly na hlavnom objekte. Podblok moze byt vymazany
  268. alebo preneseny do novej verzie archivu, ak je archiv aktualizovany.
  269.  
  270.  Podblok obsahuje nasledujuce polia:
  271.  
  272. HEAD_CRC        CRC bloku
  273. 2 bajty
  274.  
  275. HEAD_TYPE       Typ hlavicky: 0x77
  276. 1 bajt
  277.  
  278. HEAD_FLAGS      Bitove priznaky
  279. 2 bajty
  280.                 (HEAD_FLAGS & 0x8000) == 1, pretoze uplna
  281.                 velkost bloku je HEAD_SIZE + DATA_SIZE
  282.  
  283. HEAD_SIZE       Celkova velkost bloku
  284. 2 bajty
  285.  
  286. DATA_SIZE       Celkova velkost dat
  287. 4 bajty
  288.  
  289. SUB_TYPE        Typ podbloku
  290. 2 bajty
  291.  
  292. RESERVED        Musi byt 0
  293. 1 bajt
  294.  
  295. Ine polia       Ine polia v zavislosti od typu podbloku
  296.  
  297.  
  298.   Podblok rozsirenych atributov OS/2
  299.  
  300.  
  301. HEAD_CRC        CRC bloku
  302. 2 bajty
  303.  
  304. HEAD_TYPE       Typ hlavicky: 0x77
  305. 1 bajt
  306.  
  307. HEAD_FLAGS      Bitove priznaky
  308. 2 bajty
  309.                 (HEAD_FLAGS & 0x8000) == 1, pretoze uplnal
  310.                 velkost bloku je HEAD_SIZE + DATA_SIZE
  311.  
  312. HEAD_SIZE       Celkova velkost bloku
  313. 2 bajty
  314.  
  315. DATA_SIZE       Celkova velkost dat (velkost skomprimovanych rozsirenych
  316. 4 bajty         atributov)
  317.  
  318. SUB_TYPE        0x100
  319. 2 bajty
  320.  
  321. RESERVED        Musi byt 0
  322. 1 bajt
  323.  
  324. UNP_SIZE        velkost rozsirenych atributov po rozbaleni
  325. 4 bajty
  326.  
  327. UNP_VER         Verzia RARu potrebna na extrakciu rosirenych atributov
  328. 1 bajt
  329.  
  330. METHOD          Metoda kompresie
  331. 1 bajt
  332.  
  333. EA_CRC          CRC rozsirenych atributov
  334. 4 bajty
  335.  
  336.  
  337.  ╔════════════════════════════════════════════════════════════════════════╗
  338.  ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  Applikacne poznamky  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
  339.  ╚════════════════════════════════════════════════════════════════════════╝
  340.  
  341.  
  342.    1. Pri spracovani SFX archivu musite vynechat SFX modul hladanim
  343. znackoveho bloku v archive. V samotnom SFX module sa nenachadza sekvencia
  344. znackoveho bloku (0x52 0x61 0x72 0x21 0x1a 0x07 0x00).
  345.  
  346.    2. CRC je kalkulovany pouzitim standardardneho polynomu 0xEDB88320.
  347. V pripade, ze velkost CRC je mensia ako 4 bajty, su pouzite len dolne bajty.
  348.  
  349.    3. Zakodovanie metody kompresie:
  350.          0x30 - ukladanie
  351.          0x31 - najrychlejsia kompresia
  352.          0x32 - rychla kompresia
  353.          0x33 - normalna kompresia
  354.          0x34 - dobra kompresia
  355.          0x35 - najlepsia kompresia
  356.  
  357.    4. Verzia RARu potrebna na extrakciu je zakodovana ako 10 * hlavne cislo
  358. verzie + minoritne cislo verzie.
  359.  
  360.